/**
 * 函数
*/

// 可选参数 在参数后加? 可选参数要放在必填参数的后面, 否则会编译错误
function fn(name:string,age?:number){
    console.log(name)
}
fn('zhangsan')

function fn2(name:string,age:number){
    console.log(name)
}
// fn2('zhangsan') Expected 2 arguments, but got 1

// 默认参数
function fn3(
    name = 'zhangsan',
    age:number,
    id?:number
):string{
    return name + age;
}
console.log(fn3(undefined,1,1)); // 打印zhangsan1

/**
 * 函数重载
 * function A(a){}
 * function A(a){} 这样写都会报错，而函数重载可以通过参数/返回值类型的不同，
 * 参数个数不同，实现相同的函数名定义多个函数
*/

